package marketing

import (
	"encoding/json"
)

// MerchantQuotaInfo 商户额度信息
type MerchantQuotaInfo struct {
	// SortValue 计费类型数组字符串
	SortValue string `json:"sort_value"`
	// UpdateTotal 最新的额度值，单位分
	UpdateTotal string `json:"update_total"`
}

// NewMerchantQuotaInfo 创建新的商户额度信息
func NewMerchantQuotaInfo() *MerchantQuotaInfo {
	return &MerchantQuotaInfo{}
}

// SetSortValue 设置计费类型数组字符串
func (m *MerchantQuotaInfo) SetSortValue(sortValue string) *MerchantQuotaInfo {
	m.SortValue = sortValue
	return m
}

// SetUpdateTotal 设置最新的额度值
func (m *MerchantQuotaInfo) SetUpdateTotal(updateTotal string) *MerchantQuotaInfo {
	m.UpdateTotal = updateTotal
	return m
}

// ToMap 将对象转换为map，过滤掉值为空的字段
func (m *MerchantQuotaInfo) ToMap() (map[string]interface{}, error) {
	data, err := json.Marshal(m)
	if err != nil {
		return nil, err
	}

	var result map[string]interface{}
	if err := json.Unmarshal(data, &result); err != nil {
		return nil, err
	}

	// 过滤掉值为空的字段
	for key, value := range result {
		if value == "" {
			delete(result, key)
		}
	}

	return result, nil
}
